! 指针访问例程内的 save 变量
module utils

contains

    subroutine get_value(ik)
        integer, target, save :: x
        integer, pointer :: ik

        ik => x

    end subroutine get_value

    subroutine say_hello()
        integer, pointer :: x

        call get_value(x)
        print '(a,1x,i0)', 'Hello,', x

    end subroutine say_hello

end module utils

program main

    use utils
    integer, pointer :: i

    call get_value(i)
    i = 100

    call say_hello()

end program main
